// ========================================================================
// Copyright (c) 2010 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
// The Eclipse Public License is available at 
// http://www.eclipse.org/legal/epl-v10.html
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
// You may elect to redistribute this code under either of these licenses. 
// ========================================================================
/**
 * Copyright 2011 Ivan Hristov
 *
 * hristov.iv [AT] gmail [DOT] com
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License. You may obtain a
 * copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 *
 */
package com.google.code.johanna.scala.websocket.client
import org.eclipse.jetty.io.Buffer

/**
 *
 * @author Ivan Hristov
 *
 */
trait WebSocketParser {
  def getBuffer(): Buffer;

  /**
   * @return an indication of progress, normally bytes filled plus events parsed, or -1 for EOF
   */
  def parseNext(): Int;

  def isBufferEmpty(): Boolean;

  def fill(buffer: Buffer);
}

trait FrameHandler {
  def onFrame(flags: Byte, opcode: Byte, buffer: Buffer);
  def close(code: Int, message: String);
}